System and method for definition, creation, management, transmission, and monitoring of errors in soa environment

ABSTRACT

A computer-implemented system and method for the definition, creation, management, transmission, and monitoring of errors in a SOA environment. An example embodiment includes: defining a common standard error data structure; automatically generating a unique identifier (ID) for each new error data instance; allowing customization of error data structure through extensions; creation and management of error instances that conform to this structure; ability to group errors across various dimensions; introducing the concept of an error library, the error library including a plurality of localizable error bundles, each of the error bundles including a plurality of error data instances for a particular domain, along with the associated metadata; automatically creating runtime artifacts for each error; ability to transmit errors either as faults or as part of the normal response payload; automatic error metric collection based on various error categories, and finally, tooling to help manage error libraries and reporting errors.

PRIORITY

This application is a Continuation of U.S. patent application Ser. No.13/850,021, filed on Mar. 25, 2013, which is a Continuation of U.S.patent application Ser. No. 12/766,712, filed on Apr. 23, 2010, issuedon Mar. 26, 2013 as U.S. Pat. No. 8,407,520, the benefit of priority ofeach of which is claimed hereby, and each are incorporated herein byreference in their entirety.

COPYRIGHT NOTICE

A portion of the disclosure of this patent document contains materialthat is subject to copyright protection. The copyright owner has noobjection to the facsimile reproduction of the patent document or thepatent disclosure, as it appears in the Patent and Trademark Officepatent files or records, but otherwise reserves all copyright rightswhatsoever. The following notice applies to the software and data asdescribed below and in the drawings that form a part of this document:Copyright 2008-2010, eBay Inc., All Rights Reserved.

BACKGROUND

1. Technical Field

This disclosure relates to methods and systems supporting computing anddata processing systems. Specifically, the disclosure relates todefinition, creation, management, transmission, and monitoring of errorsin a Services Oriented Architecture (SOA) environment.

2. Related Art

In SOA, there are typically many communicating reusable services thatare deployed in several machines. In large-scale enterprises, like eBay,eTrade, or Google, for example, there could be thousands of differentservices deployed in thousands of machines. It is most common andefficient for these automated services to communicate with each other.Further, external access is also typically provided for some of theseservices. In communicating with each other, various different types ofcommunication protocols may be used for efficiency and optimizationreasons. Communication between service providers and service consumerscan be accomplished using some pre-defined protocol. In the web servicescase, this protocol can be the Simple Object Access Protocol (SOAP).SOAP is a protocol for exchanging Extensible Mark-up Language(XML)-based messages over computer networks, normally using HypertextTransport Protocol (HTTP/HTTPS).

No matter how perfectly software is implemented, often times, certainthings go wrong and we need a simple and clear mechanism to communicateexactly what went wrong to the callers/users. It is also vital that weneed to standardize and follow a common mechanism for describing notonly what an error means, but also to propagate such messagesconsistently and uniformly to the callers. Errors are essentially aresult of abnormal processing of the request. This could be due toinvalid input/request from the caller, or due to some business error orunexpected system errors. Regardless of what the error is, we need aconsistent way to define, create, manage, and transmit the details ofthe error, to enable service developers and service consumer developersto do error processing efficiently.

In a SOA environment, service errors can be defined as any conditionindicating complete or partial failure of a service operation,regardless of how this condition is signaled in the whole serviceprocessing flow. In this sample definition, service errors in SOA cancome in two forms:

-   -   Faults: Declared in the Web Services Description Language (WSDL)        as Fault messages and transmitted from services to consumers in        a out of band payload. In the case of SOAP protocol, it is the        SOAPFaults, transmitted as exceptions in Java language bindings;    -   Response-Resident Errors (RRE): Errors transmitted as part of        the normal response payload of operation execution.

In both of these scenarios, the structure of the error can be commonlydefined for uniformity, consistency and for uniquely identifying errorsacross an organization. These errors can be originated from:

-   -   The service implementation when the service application business        logic detects application errors, and    -   The SOA runtime when it detects system level errors.

In the absence of special measures (e.g., modelingtechniques/implementation enhancements, etc.), there can be a divergentprocessing flow for service errors. This complicates client processing,especially for non-SOA clients and for 3rd party coders; because, inmost cases, processing flows must be anticipated. Additionally, forresponse-resident errors, in the absence of additional framework orapplication implementation, most of the SOA value-added processing ismissed. A framework is a system, such as an application, within which aerror processing mechanism is implemented.

Thus, a computer-implemented system and method for the definition,creation, management, transmission, and monitoring of errors in a SOAenvironment is needed.

BRIEF DESCRIPTION OF THE DRAWINGS

Embodiments illustrated by way of example and not limitation in thefigures of the accompanying drawings, in which:

FIG. 1 illustrates schema of the common error data type—(ErrorData) inan example embodiment;

FIG. 2 illustrates the ErrorData model in an example embodiment;

FIG. 3 illustrates the ErrorLibrary model in an example embodiment;

FIG. 4 illustrates a user interface for creating a new Error Library inan example embodiment;

FIG. 5 illustrates the Error Library creation wizard in an exampleembodiment;

FIG. 6 illustrates an example embodiment for creating an error domain;

FIG. 7 illustrates an example embodiment for creating an error type;

FIG. 8 illustrates an example of the search wizard in the content pluginin an example embodiment;

FIG. 9 illustrates the error ID space in an example embodiment;

FIG. 10 illustrates the components involved during the pluggable errorID generation process in an example embodiment;

FIG. 11 illustrates an example of the Error Id Generator interface in anexample embodiment;

FIG. 12 illustrates a processing flow diagram for an example embodiment;

FIG. 13 illustrates a processing flow diagram for an example embodiment;and

FIG. 14 shows a diagrammatic representation of a machine in the form ofa computer system within which a set of instructions, for causing themachine to perform any one or more of the methodologies discussedherein, may be executed, according to an example embodiment.

DETAILED DESCRIPTION

In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of some example embodiments. It will be evident, however,to one of ordinary skill in the art that the present invention may bepracticed without these specific details.

As described further below, according to various example embodiments ofthe disclosed subject matter described and claimed herein, there isprovided a computer-implemented system and method for the definition,creation, management, transmission, and monitoring of errors in a SOAenvironment. Various embodiments are described below in connection withthe figures provided herein. The error processing techniques describedherein are primarily used in the context of SOA services, although thetechniques are not limited to SOA services.

Error processing is an important aspect of service invocation in the SOAparadigm. The SOAP and WSDL standards, and some distributed paradigmsbefore SOAP technology such as CORBA, employ an exception pattern aroundthe definition and runtime propagation of error information. In theexception pattern, errors become serializable data types, and areassociated to an out-of-band error communication flow—the SOAP Faultflow, in the case of SOAP. Possible errors for each service operationare described in wsdl:fault definitions in the WSDL that defines aservice. This conventional mechanism has a number of limitations.

1. The number of distinct error situations in typical service-enabledbusiness logic can easily get into the hundreds, and this degree ofmultiplicity is tedious to express in WSDL.

2. The very exception-based nature of SOAP faults makes themall-or-nothing in their effect on an operation's control flow: typicallythey block further activity, making warnings and partial success(partial results) impossible.

3. Modeling of “error information within the normal “response-band”service data is expressly excluded by the SOAP fault pattern, and thestandard provides no guidance as to how to unify response-band anderror-band information.

4. Because of the lack of standardization around individual error casedefinition and around unified response/error flow modeling of errors,there is also no WSDL standards compliant tooling in the industry toprovide comprehensive management of the definition, creation,management, and transmission of errors.

In various example embodiments described herein, error processingtechniques for services (and framework) are described. These errorprocessing techniques describe how errors are defined, managed,localized and propagated to the callers, what necessary tooling isrequired to enable this error processing, and finally how an errormanagement sub-system interacts with the rest of the SOA system andtooling.

Many conventional systems do not support a formal error identifier (ID)or error messages management mechanism. Clean declaration of errors andtheir management is important for Services in a SOA environment, becauseservice consumers and service providers are isolated. Therefore, thecontract needs to have sufficient information to consumer the serviceincluding error information. Lack of a mechanism and tooling to formallydefine and manage those errors would lead to in-effective andinconsistent use of services, including interoperability issues.

Error Definition

Before describing how errors are defined, managed and propagated, wewill describe the composition of a typical error message in an exampleembodiment. In a particular embodiment, the framework can define astandard error message definition that is commonly used across thesystem.

The following can be the definition of the common base error datatype—(ErrorData) in an example embodiment. For example, see also FIGS. 1and 2.

-   -   Error ID: is a unique number that identifies the error.    -   Error Name: A human readable error name in string format.    -   Organization: The name of the organization from which the errors        come from.    -   Category: An error classification with the suggested values of        SYSTEM, APPLICATION and CLIENT. Category indicates whether the        error occurred in system, application or the client code.    -   Domain: This is a field that indicates specific group within the        organization. Example values include “TRADING”, “SEARCH”,        “SECURITY”, “BILLING”, etc.    -   sub-domain: This is a field which further helps to indicate a        subsystem within a domain. For example, for System domain,        sub-domain can include “Initialization”, “(De)Serialization”,        “Authentication”, “Authorization”, etc.    -   Severity: This is a field that indicate the severity of an        error. Possible values include—INFO, DEBUG, WARNING, CRITICAL.    -   Message: This is the language specific error message string that        can also be parameterized.    -   Resolution: This is a field which can either contain further        explanation of the error message or can contain some proposed        remedy. The combination of this resolution string and the        message string above, can be treated as a “long error message”    -   Cause: This is a field that contains the reason for the error,        including any stack trace in Java environment, etc. This can be        simply a text string. The framework doesn't need to dictate any        specific format.    -   ExceptionName: A language specific field containing additional        information to help reconstructing Fault at the other end.

All of the above fields are statically defined for any given errormessage, except for the message parameters, if any, and the Cause field.Cause, Resolution, and sub-domain are optional.

Localization

Error messages also need to be localizable. How those error messages arelocalized is specific to a particular embodiment. This can be achievedthrough Property Resource Bundles in a particular embodiment. TheseResource bundles should be included in an Error Library, as described inmore detail in later sections.

Error Categories

There are three categories of errors. SYSTEM, APPLICATION and CLIENT.SYSTEM errors are the errors generated by framework independent of anyapplication logic. APPLICATION errors are the errors generated byservice implementation. CLIENT errors are errors generated due toinvalid or insufficient input sent from the client to the service.However, all the errors are handled the same way.

Customization of Error Types

Occasionally, there may be a need for service developers to customizethe standard error message definition. To accommodate this, theframework and the tooling can allow customization of the error messagedefinition. The framework can define a common base error typedefinition, hereafter referred to as ErrorData. All errors can use thesame ErrorData definition, by default. Services can optionally define aderived type (only extension) to include additional information.

The wire format for these custom errors could be either as exactlydefined in the derived type or a custom error handler can be supplied tomap the errors as necessary in an example embodiment.

When an error is defined as part of a normal payload response, it issuggested a top level element to be used to easily identify errors inthe response for system error processing. This is useful for example tocollect various error metrics by the system while processing the errors.

This ErrorData data type structure, as described above, can be definedas a schema type in a common namespace (e.g.,http://www.host.com/services) and reused across all services in theirown respective namespaces.

It is also possible to return more than one error (i.e., ErrorData) tothe caller, on any given operation invocation. Using the ErrorDatastructure defined above, many actual instances of error messages can becreated. These error messages can be used by services (or the frameworkas the case may be), at runtime to indicate what has gone wrong. We needto be clear about the distinction between the structure of the errortype and the actual instances of error messages. The actual instances oferror messages also need to be managed. Here a construct called ErrorLibrary is introduced to manage and maintain the error instancedefinitions. The anatomy of this ErrorLibrary is described in a latersection herein.

Error ID Management

The Error ID, as defined in the ErrorData structure described above,must be unique across all errors within an organization, so we candistinguish one error from another. Sufficient tooling can supportgenerating these unique Error ID's as part of the overall errorprocessing system. Users or applications (i.e., entities defining theerror messages themselves) don't need to be concerned about the actualError ID numbers or how to generate them.

In an example embodiment, one can reserve special ranges for differentcategories of errors belonging to separate domains, to make themanagement easier. For example, system errors could reserve a range of1-10,000 and application errors could have a range from 10,000-100,000.For example, see the embodiment shown in FIG. 9.

Error Id Generator

The Error Id Generator refers to a component that is responsible forcreating unique error IDs. An interface called ErrorIDGenerator isdefined and different implementations of this interface can be pluggedin. For example, one implementation may use a data base sequencegenerator. The error creating tooling calls this generator to get thenext unique error ID while creating an error. For example, see FIGS.10-11.

Client Side Retries

For system errors, in an example embodiment, there can also be afacility to configure a client to automatically retry the invocation forspecific errors. This capability may not make sense for applicationerrors; because, an automatic retry may not make sense for anapplication error and often requires a change in the request of somesort.

Error Metrics

In an example embodiment, metrics can be defined and collected forspecific errors. For example, metrics can be collected that define thenumber of errors that occurred when invoking a specific service,specific operation, categorized by various dimensions like client ID, orapplication ID. In addition, metrics can be collected that measurecounts on error categories: System, Application, and Client. Forexample, metrics can be collected that can be used to determine that aspecific operation invocation has X number of errors, but also tomeasure that out of these X number of errors, Y are system errors and Zare application errors. Additionally, the metrics provide informationthat specifies that within the Z application errors how many are“001—Invalid Input” errors, how many are “002—Can't find item” errors,etc. Further, metrics can be collected that are based on error domains.Also, metrics can be collected that measure counts of errors byseverity. It can be implemented as either one metric for severity or onemetric for all severities and use components to indicate counts forindividual severities. Thus, errors can be sliced and diced, andreported in many different dimensions. In a particular embodiment, thismetrics collection can be done by configuring a handler in SOA runtime.

In order to measure the error metrics in the different dimensions oferrors, a particular embodiment provides a mechanism in “ResponsePipeline handler” that checks for whether an error is part of a responseand accordingly updates the respective metrics. This handler can get theinformation from the type mappings file. Once error information iscollected from the RRE, appropriate error metrics, as defined in thesection above, can be updated. Once the error metrics are defined andcollected, alert conditions can be defined for those, using acentralized alerting framework. This mechanism can be used to collecterror metrics both on the server side and client side.

Custom Error Mapping

Even though the format and structure is pre-defined for errors,sometimes there is a need to map that pre-defined structure to anexisting error format, for legacy reasons. A particular embodiment canprovide custom error mapping feature to allow such mappings.

Error Logging and Reporting

A particular embodiment can provide a centralized alerting functionbased on error metrics. Errors can be logged as events. Error events canbe sampled and logged. It may not be necessary to log every event;because, the volume may be quite high. The error sampling frequency canbe configurable with a default. For example, the default error samplingfrequency can be as follows: once an error of a particular type occurs,log the error and then don't log the error for the next 10 occurrencesof the same kind of error.

The Error Library

Example embodiments provide a mechanism for creating and managing theactual instances of error messages. A concept of the Error Library isprovided for this purpose. For example, see FIG. 3.

An Error Library is a collection of logically related errors that aregrouped by domain. It consists of error bundles. An error bundlecontains multiple error instances, and an associated metadata file thatdescribes static data about the errors such as, the organization,domain, category, severity, etc. Tooling is provided to help create orupdate an error instance in a particular bundle of an ErrorLibrary, aswell as creating and managing the bundle and the library itself.Further, tooling can help choose a particular error to be included in aservice implementation.

As already mentioned, instances of errors can be managed in the Errorlibrary, except for Cause/Detail string and message parameters. Everyother aspect of the base error message is statically defined for anygiven instance of the error message in a particular embodiment. However,not every part of the error needs to be localized. A particularembodiment can localize the error message string and resolution string.The remainder of the data for a particular error doesn't need to belocalized. For localization, one option is to use the standard PropertyResource Bundle approach, available as part of the standard JavaDeveloper's Kit (JDK). To avoid the overhead and repetition, aparticular embodiment can split the error information so that we onlykeep the localizable information in the properties file of the ResourceBundle and keep the non-localizable static information in a separatemetadata file. The resource properties files and the metadata file formsa bundle for a error domain. This is called an Error Bundle. In additionto the standard resource bundle mechanism, a particular embodiment maysupport other pluggable localization mechanisms, to store thelocalizable part of the ErrorData. This pluggability is abstractedthrough an ErrorProvider interface. The different implementations ofthis interface are called Error providers.

For example, if we have a Properties Resource Bundle for errors fromSystem domain, we can have the following files, with example content inthe files as described below.

SystemErrors_en.propertieserrorName1=“Error Message in English for error 1”, “Error Resolution inEnglish for error 1”errorName2=“Error Message in English for error 2”, “Error Resolution inEnglish for error 2”SystemErrors_de.propertieserrorName1=“Error Message in German for error 1”, “Error Resolution inGerman for error 1”errorName2=“Error Message in German for error 2”, “Error Resolution inGerman for error 2”Application_TradingErrors_en.propertieserrorName3=“Error Message in English for error 3”, “Error Resolution inEnglish for error 3”errorName4=“Error Message in English for error 4”, “Error Resolution inEnglish for error 4”

These property resource bundles, along with the metadata file thatcontains the static information (e.g., category, severity, etc., for agiven error), is what is included in an error library of an exampleembodiment. In a particular embodiment, the metadata file is expressedin XML. The build artifact for an error library can be a Standard JavaArchive file (jar file), so the file can be loaded using the standardmechanisms.

A single error library can contain multiple Resource bundles, one perdomain. Each Resource Bundle. On the other hand, we can also create aseparate error library for each of these. There is no restriction eitheron the model or on the tooling to do it one way or another.

In order to efficiently locate the appropriate resource bundle and loadit at runtime, certain conventions can be followed for the names of theResource Bundles. The name can be<CategoryName_DomainName_language.properties> in a particularembodiment. Tooling can add the required error libraries as a dependencyfor the service implementation and client projects.

A particular embodiment can provide a utility function to servicedevelopers to use an error instance (i.e., a new ErrorData) at runtime,when they want to include such error in their response or otherwise.This utility function can take the information like error category,optional domain name, and an error id. Based on this information, theutility function can look up the appropriate Resource Bundle and createand populate an ErrorData instance and return. In the case of customerror data type, any additional fields are expected to be filled in bythe application code. Custom error fields are not managed inside theerror library.

Error Grouping

An example embodiment includes the ability to group certain errorstogether for management and tracking purposes. For example, allauthentication-related errors may be grouped together. Errors like,invalid token, token expired, temporarily blocked, etc. may also beseparately grouped A metric may be defined to collect the total numberof errors for a given group. The framework itself may not come up withthe group definition or its constituents; but, we can help servicedevelopers to define such groups and we can have a metric automaticallyregistered for that group at initialization time and collect data forthat group.

Error group names are strings and are unique within an error library. Sothe combination of error library name and the group name can be globallyunique. The metric that is auto-registered can be this name to avoidcollisions.

Tooling

An Eclipse plugin can provide functionality to create and manage errorlibraries and ErrorData instances in them. Several actions can besupported by this plugin.

Creating a New Error Library

This Error Library plugin action can ask for the name of the new errorlibrary. For example, see FIGS. 4-6. The new error library structure isthen created in the workspace with the given name.

Creating a New Error Bundle

A new error bundle is implicitly created when a new error is createdwith a new category and domain combination, that doesn't already exist.No explicit menu item is needed for this. An Error bundle is acombination of a property resource bundle and the corresponding metadata file.

Creating a New Error

This Error Library plugin action can ask for all the fields in ErrorData(except for the ID) or its derived type, in addition to the name of thelibrary, and insert a new record in the corresponding metadata file andthe Resource Bundle. The Error ID can be generated using the IDgenerator interface and the mechanism described above. For example, seeFIG. 7.

Error Library Search

A particular embodiment can provide a search menu for error searching.An error search can be based on name, category, domain, or description.The search feature can refer to tooling support required to find/grouperrors by various criteria. These criteria can include the following:

-   -   Search by error ID    -   Search by error name    -   Search by category name    -   Search by domain    -   Search by description

The error library search functionality can be based on a standardcontent search model. For example, see FIG. 8.

Editing Existing Errors

Error editing can be done by either directly opening up the errorlibrary bundle, if the project is already loaded, or one can start witha search and double click on the search results, which can automaticallyload the error library and allow editing of the error. Only the errorstring and the resolution string can be edited. Other fields shouldn'tbe editable. Errors shouldn't be deletable, once they are created in theerror library.

Adding New Domains or Sub-Domains

We don't need any special tooling support for adding new domains orsub-domains. As part of adding a new error instance, the pop-up userinterface can prompt for domain, sub-domain, etc. For example, see FIG.7. If bundles for the specified domain or sub-domain are not currentlythere (e.g., because of the naming convention of the resource bundle,for example), the tooling can automatically create correspondingbundles. A bundle for a given category and domain can only exist in oneerror library. This check can be done by the tooling.

Creating Errors for Custom Error Types

Because service developers can define their custom error types,extending from ErrorData, the tooling can support creating and managingcustom errors that correspond to this custom type as well. To keep theprocess consistent, whether the errors exactly follow ErrorData orwhether they are derived from ErrorData, the information about what isthe error type is kept in the error library itself.

Creating Error Groups

Sometimes, one may want to group certain errors together for reportingpurpose. Examples include authentication errors within security domain.A particular embodiment provides a menu item to group certain errorstogether.

Java Utility to Obtain ErrorData for the Service (getErrorData)

Ultimately, the errors defined in the error library must manifestthemselves in code some way so that the service implementation cancreate and send those errors to the callers. A particular embodiment mayprovide an application programming interface (API) that obtains theerror in a way that is independent of the Error providers. Below is theinterface definition of an example embodiment that illustrates theinteraction points between the application developer and SOA errorruntime.

/**  * ErrorDataKey is the structure that is used as a key to look up inthe ErrorDataProvider.  */  public static class ErrorDataKey {   privateString bundleName;   /** bundle name */   private String errorName;  /**error name */   private long id; /** error id */   private MapadditionalKeys;  /** This map is a placeholder for extensibilitypurposes */  } interface ErrorDataProvider {  /**   * @param key   *@param args   * @return an ErrorData based on the key/args values   */ public ErrorData getErrorData( ErrorDataKey key, Object[ ] args );  /**  *Allows construction of a “custom” ErrorData   * @param key   * @paramargs   * @param clazz Class type that can be constructed and returned  * @return a “custom” ErrorData   */  public <T extends ErrorData>TgetCustomErrorData( ErrorDataKey key, Object[ ] args, Class<T> clazz );}

Here is some sample code illustrating usage of the API's.

ErrorDataKey key = new ErrorDataKey ( ) ; key.setLibraryName (“SearchDomainErrorLibrary” ) ; key.setBundleName ( “SearchDomain” ) ;key.setErrorName ( “insufficient_arguments ” ) ; ErrorDataProviderprovider = ErrorDataProviderFactory.getProvider ( ) ; errorData =provider.getErrorData ( key, new Object [ ] { “foo” } } ;

Each error library can be packaged as a library jar file. For anapplication to access this content, the application project is requiredto introduce a dependency on each error library they require.

As described herein, according to various example embodiments, there isprovided a computer-implemented system and method for the definition,creation, management, transmission, and monitoring of errors in a SOAenvironment. The error processing system provides several features aslisted below:

-   -   The management (creation, modification, unique identification)        of individual error instances for specific services.    -   The storage and management of content (localizable static        content and any associated metadata) associated with these error        instances.    -   The creation of runtime ErrorData instances that contain dynamic        error message parameters and static data.    -   Provisions for transmitting the runtime errors as system        exceptions, such as SOAP faults, or as application errors, which        are contained in normal operation response messages.    -   Provisions for automatically identifying and collecting error        metrics regardless how there are transmitted.

FIG. 12 is a processing flow chart illustrating an example embodiment ofthe error library processing system 1500 as described herein. The methodin an example embodiment includes: defining a common standard error datastructure; automatically generating a unique identifier (ID) for eachnew error data instance; allowing customization of error data structurethrough extensions; creation and management of error instances thatconform to this structure; ability to group errors across variousdimensions; introducing the concept of an error library, the errorlibrary including a plurality of localizable error bundles, each of theerror bundles including a plurality of error data instances for aparticular domain, along with the associated metadata; automaticallycreating runtime artifacts for each error; ability to transmit errorseither as faults or as part of the normal response payload; automaticerror metric collection based on various error categories, and finally,tooling to help manage error libraries and reporting errors.

FIG. 13 is a processing flow chart illustrating another exampleembodiment of the error library processing system 1600 as describedherein. The method of an example embodiment includes: receiving an errortype definition specifying a common error structure (processing block1610); creating, by a data processor, an error library, the errorlibrary including a plurality of error bundles, each of the errorbundles including a plurality of error data instances, the error datainstances conforming to the common error structure (processing block1620); receiving a request to add a new error data instance to the errorlibrary (processing block 1630); automatically generating a uniqueidentifier (ID) for the new error data instance, the new error datainstance ID being unique among all error data instances in the errorlibrary (processing block 1640); and building the error library tocreate code which registers all error data instances in the errorlibrary (processing block 1650).

FIG. 14 shows a diagrammatic representation of a machine in the exampleform of a computer system 700 within which a set of instructions, forcausing the machine to perform any one or more of the methodologiesdiscussed herein, may be executed. In alternative embodiments, themachine operates as a standalone device or may be connected (e.g.,networked) to other machines. In a networked deployment, the machine mayoperate in the capacity of a server or a client machine in client-servernetwork environment, or as a peer machine in a peer-to-peer (ordistributed) network environment. The machine may be a server computer,a client computer, a personal computer (PC), a tablet PC, a set-top box(STB), a Personal Digital Assistant (PDA), a cellular telephone, a webappliance, a network router, switch or bridge, or any machine capable ofexecuting a set of instructions (sequential or otherwise) that specifyactions to be taken by that machine. Further, while a single machine isillustrated, the term “machine” shall also be taken to include anycollection of machines that individually or jointly execute a set (ormultiple sets) of instructions to perform any one or more of themethodologies discussed herein.

The example computer system 700 includes a processor 702 (e.g., acentral processing unit (CPU), a graphics processing unit (GPU), orboth), a main memory 704 and a static memory 706, which communicate witheach other via a bus 708. The computer system 700 may further include avideo display unit 710 (e.g., a liquid crystal display (LCD) or acathode ray tube (CRT)). The computer system 700 also includes an inputdevice 712 (e.g., a keyboard), a cursor control device 714 (e.g., amouse), a disk drive unit 716, a signal generation device 718 (e.g., aspeaker) and a network interface device 720.

The disk drive unit 716 includes a machine-readable medium 722 on whichis stored one or more sets of instructions (e.g., software 724)embodying any one or more of the methodologies or functions describedherein. The instructions 724 may also reside, completely or at leastpartially, within the main memory 704, the static memory 706, and/orwithin the processor 702 during execution thereof by the computer system700. The main memory 704 and the processor 702 also may constitutemachine-readable media. The instructions 724 may further be transmittedor received over a network 726 via the network interface device 720.

Applications that may include the apparatus and systems of variousembodiments broadly include a variety of electronic and computersystems. Some embodiments implement functions in two or more specificinterconnected hardware modules or devices with related control and datasignals communicated between and through the modules, or as portions ofan application-specific integrated circuit. Thus, the example system isapplicable to software, firmware, and hardware implementations. Inexample embodiments, a computer system (e.g., a standalone, client orserver computer system) configured by an application may constitute a“module” that is configured and operates to perform certain operationsas described herein. In other embodiments, the “module” may beimplemented mechanically or electronically. For example, a module maycomprise dedicated circuitry or logic that is permanently configured(e.g., within a special-purpose processor) to perform certainoperations. A module may also comprise programmable logic or circuitry(e.g., as encompassed within a general-purpose processor or otherprogrammable processor) that is temporarily configured by software toperform certain operations. It will be appreciated that the decision toimplement a module mechanically, in the dedicated and permanentlyconfigured circuitry, or in temporarily configured circuitry (e.g.configured by software) may be driven by cost and time considerations.Accordingly, the term “module” should be understood to encompass atangible entity, be that an entity that is physically constructed,permanently configured (e.g., hardwired) or temporarily configured(e.g., programmed) to operate in a certain manner and/or to performcertain operations described herein. While the machine-readable medium722 is shown in an example embodiment to be a single medium, the term“machine-readable medium” should be taken to include a single medium ormultiple media (e.g., a centralized or distributed database, and/orassociated caches and servers) that store the one or more sets ofinstructions. The term “machine-readable medium” shall also be taken toinclude any medium that is capable of storing, encoding or carrying aset of instructions for execution by the machine and that cause themachine to perform any one or more of the methodologies of the presentdescription. The term “machine-readable medium” shall accordingly betaken to include, but not be limited to, solid-state memories, opticaland magnetic media, and carrier wave signals. As noted, the software maybe transmitted over a network using a transmission medium. The term“transmission medium” shall be taken to include any medium that iscapable of storing, encoding or carrying instructions for transmissionto and execution by the machine, and includes digital or analogcommunications signal or other intangible medium to facilitatetransmission and communication of such software.

The illustrations of embodiments described herein are intended toprovide a general understanding of the structure of various embodiments,and they are not intended to serve as a complete description of all theelements and features of apparatus and systems that might make use ofthe structures described herein. Many other embodiments will be apparentto those of ordinary skill in the art upon reviewing the abovedescription. Other embodiments may be utilized and derived there from,such that structural and logical substitutions and changes may be madewithout departing from the scope of this disclosure. The figuresprovided herein are merely representational and may not be drawn toscale. Certain proportions thereof may be exaggerated, while others maybe minimized. Accordingly, the specification and drawings are to beregarded in an illustrative rather than a restrictive sense.

Thus, a computer-implemented system and method for the definition,creation, management, transmission, and monitoring of errors in a SOAenvironment are disclosed. While the present invention has beendescribed in terms of several example embodiments, those of ordinaryskill in the art will recognize that the present invention is notlimited to the embodiments described, but can be practiced withmodification and alteration within the spirit and scope of the appendedclaims. The description herein is thus to be regarded as illustrativeinstead of limiting.

1. A method comprising: creating a data structure providing a standarderror message definition specifying a plurality of fields, the fieldscomprising fields for at least an error ID, an error domain indicating agroup within an organization from which the error comes, and an errorcategory selected from a group comprising system errors, applicationerrors, and client errors; and within an error library structure,creating a plurality of errors conforming to the standard error messagedefinition and grouping the errors into a plurality of error bundlescorresponding to respective combinations of an error domain and an errorcategory.
 2. The method of claim 1, wherein the error bundle for eachcombination of an error domain and an error category is automaticallycreated upon a first creation of an error having that error domain andthat error category associated with it.
 3. The method of claim 1,further comprising creating error groups based on developer input, andautomatically registering a metric and collecting data for each errorgroup at a time of initialization of the error group, the metricmeasuring a total error count for the group.
 4. The method of claim 1,further comprising defining error metrics measuring separate errorcounts for at least one of separate ones of the error categories,separate ones of the error domains, separate levels of severity,separate clients, or separate applications.
 5. The method of claim 1,further comprising automatically generating a unique error ID for eachof the errors.
 6. The method of claim 5, wherein the error IDs arenumbers, the method further comprising reserving special ranges ofnumbers for errors belonging to certain error categories or errordomains.
 7. The method of claim 1, wherein the fields specified in thestandard error message definition further comprise fields for at leastone of a human-readable error name, a name of the organization fromwhich the error comes, a sub-domain, a level of severity, alanguage-specific error message string, a language-specific resolutionstring, a cause of the error, and a language-specific exception name. 8.The method of claim 1, wherein each error bundle comprises a metadatafile that stores static data about the errors and a property resourcebundle comprising properties files that store localizable data about theerrors.
 9. The method of claim 8, wherein the static data comprises atleast one of a name of the organization from which the error comes, theerror domain, the error category, or a level of severity.
 10. The methodof claim 8, wherein the localizable data comprises an error messagestring and a resolution string.
 11. A system comprising: anon-transitory machine-readable medium for storing an error librarystructure; and one or modules implemented by a processor and memorystoring instructions executable by the processor, the one or moremodules being configured to create of a data structure providing astandard error message definition specifying a plurality of fields, thefields comprising fields for at least an error ID, an error domainindicating a group within an organization from which the error comes,and an error category selected from a group comprising system errors,application errors, and client errors; and create, within the errorlibrary structure, a plurality of errors conforming to the standarderror message definition and grouping the errors into a plurality oferror bundles corresponding to respective combinations of an errordomain and an error category.
 12. The system of claim 11, wherein theone or modules are configured to automatically create the error bundlefor each combination of an error domain and an error category upon afirst creation of an error having that error domain and that errorcategory associated with it.
 13. The system of claim 11, wherein the oneor more modules are configured to create error groups based on developerinput, and automatically register a metric and collect data for eacherror group at a time of initialization of the error group, the metricmeasuring a total error count for the group.
 14. The system of claim 11,wherein the one or more modules are configured to define error metricsmeasuring separate error counts for at least one of separate ones of theerror categories, separate ones of the error domains, separate levels ofseverity, separate clients, or separate applications.
 15. The system ofclaim 11, wherein the one or more modules are configured toautomatically generating a unique error ID for each of the errors. 16.The system of claim 15, wherein the error IDs are numbers, the one ormore modules further being configured to reserve special ranges ofnumbers for errors belonging to certain error categories or errordomains.
 17. The system of claim 11, wherein the fields specified in thestandard error message definition further comprise fields for at leastone of a human-readable error name, a name of the organization fromwhich the error comes, a sub-domain, a level of severity, alanguage-specific error message string, a language-specific resolutionstring, a cause of the error, and a language-specific exception name.18. The system of claim 11, wherein each error bundle comprises ametadata file that stores static data about the errors and a propertyresource bundle comprising properties files that store localizable dataabout the errors.
 19. The system of claim 18, wherein the static datacomprises at least one of a name of the organization from which theerror comes, the error domain, the error category, or a level ofseverity, and wherein the localizable data comprises an error messagestring and a resolution string.
 20. A non-transitory machine-readablemedium storing instructions executable by a machine, the instructions,when executed, causing the machine to create a data structure providinga standard error message definition specifying a plurality of fields,the fields comprising fields for at least an error ID, an error domainindicating a group within an organization from which the error comes,and an error category selected from a group comprising system errors,application errors, and client errors; and within an error librarystructure, create a plurality of errors conforming to the standard errormessage definition and grouping the errors into a plurality of errorbundles corresponding to respective combinations of an error domain andan error category.